﻿Imports System.Data.SqlClient
Imports DevExpress.XtraReports.UI

Public Class frmAgregarResultado
    Dim ultResultado As Integer
    Private Sub frmAgregarResultado_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.TipoAnalisisTableAdapter.Fill(Me.LabCDMDataSet.TipoAnalisis)
        'TODO: esta línea de código carga datos en la tabla 'LabCDMDataSet.SP_FiltroAnalisisPaciente' Puede moverla o quitarla según sea necesario.
        Me.SP_FiltroAnalisisPacienteTableAdapter.Fill(Me.LabCDMDataSet.SP_FiltroAnalisisPaciente)

    End Sub

    Private Async Sub btnFiltrar_Click(sender As Object, e As EventArgs) Handles btnFiltrar.Click
        Try
            If varConexion.State = ConnectionState.Open Then
                varConexion.Close()
            End If
            Await varConexion.OpenAsync()

            Dim sqlFiltro As String = String.Format("SELECT a.Fecha_Recepcion, a.Muestra_Sangre, a.Muestra_Orina, a.Muestra_Heces, a.Otros, a.Descripcion_Otros, a.Observaciones , b.Rnp_Paciente, b.Nombres, b.Apellidos, b.Fecha_Nacimiento, c.Sexo, d.Tipo_Paciente   FROM Analisis a INNER JOIN Paciente b ON a.Rnp_Paciente = b.Rnp_Paciente INNER JOIN Sexo c ON b.Id_Sexo = c.Id_Sexo INNER JOIN Tipo_Paciente d ON b.Id_Tipo_Paciente = d.Id_Tipo_Paciente  WHERE a.Id_Analisis = '{0}'", Me.cboFiltroAnalisis.EditValue)
            Dim cmd As New SqlCommand(sqlFiltro, varConexion)
            Dim reader As SqlDataReader = Await cmd.ExecuteReaderAsync()

            If Await reader.ReadAsync() Then
                Me.dtpFechaRecepcion.EditValue = reader.Item("Fecha_Recepcion")
                If CDbl(reader.Item("Muestra_Sangre")) = 1 Then
                    Me.chkSangre.Checked = True
                End If
                If CDbl(reader.Item("Muestra_Orina")) = 1 Then
                    Me.chkOrina.Checked = True
                End If
                If CDbl(reader.Item("Muestra_Heces")) = 1 Then
                    Me.chkHeces.Checked = True
                End If
                If CDbl(reader.Item("Otros")) = 1 Then
                    Me.chkOtros.Checked = True
                End If
                Me.txtAnalisisSolicitado.EditValue = reader.Item("Descripcion_Otros")
                Me.txtPaciente.EditValue = reader.Item("Rnp_Paciente")
                Me.txtNombres.EditValue = reader.Item("Nombres")
                Me.txtApellidos.EditValue = reader.Item("Apellidos")
                Me.txtEdad.EditValue = Fix(DateDiff(DateInterval.Month, CDate(reader.Item("Fecha_Nacimiento")), CDate(Date.Now.ToShortDateString)) / 12)
                Me.txtSexo.EditValue = reader.Item("Sexo")
                Me.txtTipoPaciente.EditValue = reader.Item("Tipo_Paciente")
                Me.txtObservaciones.EditValue = reader.Item("Observaciones")

                Me.GroupControl4.Enabled = True
                Me.gcResultados.Enabled = True
                Me.cboTipoAnalisis.Enabled = True

            End If

            varConexion.Close()

            GuardarResultado()

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub GuardarResultado()
        Try
            If varConexion.State = ConnectionState.Open Then
                varConexion.Close()
            End If

            varConexion.Open()

            Dim hAhora As DateTime = Convert.ToDateTime(Date.Now)
            Dim tehora As String = hAhora.ToString("HH:mm")

            Dim sql As String = String.Format("INSERT INTO Resultado (Id_Analisis, Fecha_Resultado, Hora_Resultado, Codigo_Usuario) VALUES({0}, '{1}', '{2}', {3})", Me.cboFiltroAnalisis.EditValue, Me.dtpFechaRecepcion.DateTime.ToString("MM/dd/yyyy"), tehora, 1)
            Dim cmd As New SqlCommand(sql, varConexion)
            cmd.ExecuteNonQuery()

            varConexion.Close()

            ObtenerUltimoResultado()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub ObtenerUltimoResultado()
        Try
            If varConexion.State = ConnectionState.Open Then
                varConexion.Close()
            End If

            varConexion.Open()
            Dim sql As String = "SELECT TOP 1 Id_Resultado FROM Resultado ORDER BY Id_Resultado DESC"
            Dim cmd As New SqlCommand(sql, varConexion)
            Dim reader As SqlDataReader = cmd.ExecuteReader

            If reader.Read Then
                ultResultado = reader.Item("Id_Resultado")
            Else
                MsgBox("No se encuentra este resultado")
            End If
            varConexion.Close()
        Catch ex As Exception

        End Try
    End Sub

    Private Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles btnAgregar.Click
        Me.Detalle_ResultadoTableAdapter1.InsertarDetalleResultado(ultResultado, CInt(Me.cboTipoResultado.EditValue), CStr(Me.txtValor.EditValue))
        Me.SP_DetalleResultadosXPacienteTableAdapter.Fill(Me.LabCDMDataSet.SP_DetalleResultadosXPaciente, ultResultado)

        Me.txtValor.EditValue = Nothing
        ActualizarObservacionResultado()
    End Sub

    Private Sub ActualizarObservacionResultado()
        Try
            If varConexion.State = ConnectionState.Open Then
                varConexion.Close()
            End If

            varConexion.Open()

            Dim sql As String = String.Format("UPDATE Resultado SET Observaciones = '{0}' WHERE Id_Resultado = {1}", CStr(Me.txtObservacionResultado.EditValue), ultResultado)
            Dim cmd As New SqlCommand(sql, varConexion)
            cmd.ExecuteNonQuery()

            varConexion.Close()

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub btnCerrar_Click(sender As Object, e As EventArgs) Handles btnCerrar.Click
        Me.Dispose()
        Me.Close()
    End Sub

    Private Sub btnImprimir_Click(sender As Object, e As EventArgs) Handles btnImprimir.Click
        Dim rptImprime As New rptResultados
        rptImprime.LLenarDatos(ultResultado)
        Dim reportTool As New ReportPrintTool(rptImprime)
        reportTool.Report.CreateDocument(False)
        reportTool.ShowRibbonPreviewDialog()
    End Sub

    Private Sub cboTipoAnalisis_EditValueChanged(sender As Object, e As EventArgs) Handles cboTipoAnalisis.EditValueChanged
        Me.SP_TipoResultadoXTipoAnalisisTableAdapter.Fill(Me.LabCDMDataSet.SP_TipoResultadoXTipoAnalisis, Me.cboTipoAnalisis.EditValue)
        Me.cboTipoAnalisis.Enabled = False
    End Sub
End Class